var arr = []

for (i = 0; i < 2; i++) {
    arr[i] = function () {
        // 可以从闭包访问可变变量
        console.log(i);
    }
}

arr[0]();       // 2 输出全局变量 var i 的值
arr[1]();       // 2


// --------------------------------------------

// 每次循环都会产生一个块级作用域, 每个块级作用域中的变量都是不同的,
// 函数执行时输出的是自己上一级 (循环产生的块级作用域) 作用域下的i值

let arr02 = []
for (let i = 0; i < 2; i++) {
    arr02[i] = function () {
        console.log(i);
    }
}

arr02[0]();       // 2 输出全局变量 var i 的值
arr02[1]();       // 2
